Nacitanie textu
Otázka od: wlado
6. 12. 2002 21:59
1. na nacitanie textu so suboru pouzivam tuto proceduru:
procedure TfrmHlavni.btnNactiClick(Sender: TObject);
var
Soub: TTextSoub;
Radka: String;
begin
AssignFile(Soub, 'data.txt');
try
Reset(Soub);
try
while not Eof(Soub) do begin
ReadLn(Soub, Radka);
Memo.Lines.Add(Radka);
end;
finally
CloseFile(Soub);
end;
except
on E:EInOutError do
case E.ErrorCode of
2: ShowMessage('xyz');
103: ShowMessage('xyz');
else
ShowMessage('Chyba: ' + E.Message);
end;
end;
end;
problem je v tom, ze text sa umiestni do noveho riadku a kurzor do riadku
pod text. Ako spravit, aby sa text tam, kde je umiestneny kurzor a kurzor
potom ostal na konci vlozeneho textu?
2. ako spravit v RichEdite reakciu na scrollovanie?
dik
Odpovedá: ing. Jan Fiala
6. 12. 2002 23:40
A je to nutne delat takto ?
Nemuzes pozit Memo.Lines.LoadFromFile('Data.TXT') ?
--
Jan Fiala
mailto:jan.fiala@iol.cz
6.12.2002 wlado:
> 1. na nacitanie textu so suboru pouzivam tuto proceduru:
> procedure TfrmHlavni.btnNactiClick(Sender: TObject);
> var
> Soub: TTextSoub;
> Radka: String;
> begin
> AssignFile(Soub, 'data.txt');
> try
> Reset(Soub);
> try
> while not Eof(Soub) do begin
> ReadLn(Soub, Radka);
> Memo.Lines.Add(Radka);
> end;
> finally
> CloseFile(Soub);
> end;
> except
> on E:EInOutError do
> case E.ErrorCode of
> 2: ShowMessage('xyz');
> 103: ShowMessage('xyz');
> else
> ShowMessage('Chyba: ' + E.Message);
> end;
> end;
> end;
> problem je v tom, ze text sa umiestni do noveho riadku a kurzor do riadku
> pod text. Ako spravit, aby sa text tam, kde je umiestneny kurzor a kurzor
> potom ostal na konci vlozeneho textu?
Odpovedá: Viliam Mlich
7. 12. 2002 10:00
Jan Fiala wrote:
> Nemuzes pozit Memo.Lines.LoadFromFile('Data.TXT') ?
Chyba je v tom, ze ludia nedokazu definovat problem. Nejde tu o
LoadFromFile, ale o TMemo.Lines.Add, ktore presuva kurzor na zaciatok
dalsieho riadku, cim cele Memo zaroluje a dolu je zbytocny prazdny
riadok.
Ja to potrebujem skoro v kazdej zakazke: v kusku Mema ukazujem
poslednych N (1 az 3) riadkov logu (s moznostou scrolovania na
poslednych M), a neprisiel som na nic lepsie, nez po 'Add' urobit toto:
if Memo1.Lines.Count >= N then
begin
Memo1.Lines[Memo1.Lines.Count-N] := Memo1.Lines[Memo1.Lines.Count-N];
Memo1.SelStart := Length(Memo1.Text) - 1;
end;
Teda najprv 'hrabnem' do prveho radoby viditelneho riadku, cim prinutim
memo, aby zarolovalo nazad a potom nastavim kurzor na koniec posledneho
riadku. Somarina, ale berieme to.
bye
vmlich http://www.rar.cz
Odpovedá: ing. Jan Fiala
7. 12. 2002 18:18
7.12.2002 Viliam Mlich:
>> Nemuzes pozit Memo.Lines.LoadFromFile('Data.TXT') ?
> Chyba je v tom, ze ludia nedokazu definovat problem. Nejde tu o
> LoadFromFile, ale o TMemo.Lines.Add, ktore presuva kurzor na zaciatok
> dalsieho riadku, cim cele Memo zaroluje a dolu je zbytocny prazdny
> riadok.
Tohle byla reakce na to nacitani.
> Ja to potrebujem skoro v kazdej zakazke: v kusku Mema ukazujem
> poslednych N (1 az 3) riadkov logu (s moznostou scrolovania na
> poslednych M), a neprisiel som na nic lepsie, nez po 'Add' urobit toto:
> if Memo1.Lines.Count >= N then
> begin
> Memo1.Lines[Memo1.Lines.Count-N] := Memo1.Lines[Memo1.Lines.Count-N];
> Memo1.SelStart := Length(Memo1.Text) - 1;
> end;
> Teda najprv 'hrabnem' do prveho radoby viditelneho riadku, cim prinutim
> memo, aby zarolovalo nazad a potom nastavim kurzor na koniec posledneho
> riadku. Somarina, ale berieme to.
V tomto pripade staci po pridani radku obycejne
Memo1.Lines.Add('Pridavany text');
Memo1.SelStart := Length(Memo1.Text) - 2;
--
Jan Fiala
mailto:jan.fiala@iol.cz
Odpovedá: Viliam Mlich
8. 12. 2002 0:20
>> Teda najprv 'hrabnem' do prveho radoby viditelneho riadku, cim
prinutim
>> memo, aby zarolovalo nazad
> V tomto pripade staci po pridani radku obycejne
>
> Memo1.Lines.Add('Pridavany text');
> Memo1.SelStart := Length(Memo1.Text) - 2;
Nestaci, vyskusaj si to. Nehrabnes - nezaroluje nazad.
bye
vmlich http://www.rar.cz <--- dnes vysla dalsia beta
3.1